博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 框架 之 文件上传下载案例
阅读量:5818 次
发布时间:2019-06-18

本文共 5731 字,大约阅读时间需要 19 分钟。

Struts 框架 文件上传

  1. 先准备 Struts 环境 (我使用的是struts 2.3.4版本)

    导jar包:

      jar包的具体作用在前面的文章有讲。

    

    配置 web.xml

Struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Struts2
/*

    然后开始开发action 

    上传action类:FileUpload  src/com.yif.fileupload

    jsp : <input type="file" name="file1">

    action类中使用  File file1 和 jsp中名字要相同

    file1FileName  file1ContentType 中的file1 需要与jsp中对应

import java.io.File;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileUpload extends ActionSupport {    // 对应表单:    private File file1;    // 文件名    private String file1FileName;    // 文件的类型(MIME)    private String file1ContentType;    public void setFile1(File file1) {        this.file1 = file1;    }    public void setFile1FileName(String file1FileName) {        this.file1FileName = file1FileName;    }    public void setFile1ContentType(String file1ContentType) {        this.file1ContentType = file1ContentType;    }    @Override    public String execute() throws Exception {        /****** 拿到上传的文件,进行处理 ******/        // 把文件上传到upload目录        // 获取上传的目录路径        String path = ServletActionContext.getServletContext().getRealPath(                "/upload");        // 创建目标文件对象        File destFile = new File(path, file1FileName);        // 把上传的文件,拷贝到目标文件中        FileUtils.copyFile(file1, destFile);        return SUCCESS;    }}

 

    开发下载文件 action类: DownAction  src/com.yif.fileupload

    list方法 将上传文件的路径下的文件 放在list中写道请求中。

package com.yif.fileupload;import java.io.File;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Map;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownAction extends ActionSupport {        /*************1. 显示所有要下载文件的列表*********************/    public String list() throws Exception {        //得到upload目录路径        String path = ServletActionContext.getServletContext().getRealPath("/upload");        // 目录对象        File file  = new File(path);        // 得到所有要下载的文件的文件名        String[] fileNames =  file.list();        // 保存        ActionContext ac = ActionContext.getContext();        // 得到代表request的map (第二种方式)        Map
request= (Map
) ac.get("request"); request.put("fileNames", fileNames); return "list"; } /*************2. 文件下载*********************/ private String fileName; public void setFileName(String fileName) { // 处理传入的参数中问题(get提交) try { fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } // 把处理好的文件名,赋值 this.fileName = fileName; } //2. 下载提交的业务方法 (在struts.xml中配置返回stream) public String down() throws Exception { return "download"; } // 3. 返回文件流的方法 public InputStream getAttrInputStream(){ return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + fileName); } // 4. 下载显示的文件名(浏览器显示的文件名) public String getDownFileName() { // 需要进行中文编码 try { fileName = URLEncoder.encode(fileName, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return fileName; } }

 

    写upload.xml    src/com.yif.fileupload

    下载配置详细:

 

    
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024     

 

txt,jpg,jar
/e/success.jsp
/e/error.jsp
/e/list.jsp
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024

 

    配置struts.xml  src/struts.xml

 

    upload.jsp页面(前端采用Bootstrap框架)   WebRoot/e/upload.jsp

    

文件上传

 

    list.jsp页面                WebRoot/e/list.jsp

    

下载列表

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
编号 文件名 操作
${vs.count } ${fileName }
下载

 

    实现效果:

    error.jsp  success.jsp略

转载地址:http://fyhbx.baihongyu.com/

你可能感兴趣的文章
做一个通用的XML序列化,支持所有类型
查看>>
winform datagridview 设置单元格为只读属性。
查看>>
JDOM入门实例:读取与创建xml文档
查看>>
读书笔记《集体智慧编程》Chapter 8 : Build Price Models
查看>>
完美解决PHP中文乱码问题
查看>>
似是而非的k=sqrt(n)
查看>>
HDOJ 1106
查看>>
链接脚本使用一例2---将二进制文件 如图片、MP3音乐、词典一类的东西作为目标文件中的一个段...
查看>>
[问题2014A01] 复旦高等代数 I(14级)每周一题(第三教学周)
查看>>
Ewebeditor最新漏洞和漏洞指数
查看>>
浏览器恶意软件
查看>>
PHP设计模式——备忘录模式
查看>>
jQuery回到顶部插件jQuery GoUp
查看>>
jquery easyui菜单树显示
查看>>
二维数组中的查找
查看>>
css3中的calc()
查看>>
Android开发之获取时间SystemClock
查看>>
git使用ssh密钥和https两种认证方式汇总(转)
查看>>
Android利用tcpdump和wireshark抓取网络数据包
查看>>
【框架】EventBus
查看>>